
package com.hospital.register.sms.constants;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * 短信服务常量类
 * 用于存储短信服务的相关配置信息，如区域ID、访问密钥ID、密钥等
 * 实现了InitializingBean接口，以便在所有属性设置完成后进行初始化
 */
@Component
public class SmsConstants implements InitializingBean {

    // 从配置文件中注入阿里云短信服务的区域ID
    @Value("${aliyun.sms.regionId}")
    private String regionId;

    // 从配置文件中注入阿里云短信服务的访问密钥ID
    @Value("${aliyun.sms.accessKeyId}")
    private String accessKeyId;

    // 从配置文件中注入阿里云短信服务的密钥
    @Value("${aliyun.sms.secret}")
    private String secret;

    // 从配置文件中注入验证码短信模板代码
    @Value("${app.sms.templateCode.verificationCode}")
    private String verificationCodeTemplate;

    // 从配置文件中注入订单提交短信模板代码
    @Value("${app.sms.templateCode.orderSubmission}")
    private String orderSubmissionTemplate;

    // 静态变量，用于存储区域ID
    private static String REGION_ID;

    // 静态变量，用于存储访问密钥ID
    private static String ACCESS_KEY_ID;

    // 静态变量，用于存储密钥
    private static String SECRET;

    // 静态变量，用于存储验证码短信模板代码
    private static String VERIFICATION_CODE_TEMPLATE;

    // 静态变量，用于存储订单提交短信模板代码
    private static String ORDER_SUBMISSION_TEMPLATE;

    /**
     * 在所有属性设置完成后进行初始化
     * 将从配置文件中注入的值赋给静态变量
     * @throws Exception 如果初始化失败
     */
    @Override
    public void afterPropertiesSet() throws Exception {
        REGION_ID = regionId;
        ACCESS_KEY_ID = accessKeyId;
        SECRET = secret;
        VERIFICATION_CODE_TEMPLATE = verificationCodeTemplate;
        ORDER_SUBMISSION_TEMPLATE = orderSubmissionTemplate;
    }

    /**
     * 获取区域ID
     * @return 区域ID
     */
    public static String getRegionId() {
        return REGION_ID;
    }

    /**
     * 获取访问密钥ID
     * @return 访问密钥ID
     */
    public static String getAccessKeyId() {
        return ACCESS_KEY_ID;
    }

    /**
     * 获取密钥
     * @return 密钥
     */
    public static String getSecret() {
        return SECRET;
    }

    /**
     * 获取验证码短信模板代码
     * @return 验证码短信模板代码
     */
    public static String getVerificationCodeTemplate() {
        return VERIFICATION_CODE_TEMPLATE;
    }

    /**
     * 获取订单提交短信模板代码
     * @return 订单提交短信模板代码
     */
    public static String getOrderSubmissionTemplate() {
        return ORDER_SUBMISSION_TEMPLATE;
    }

}